// pages/profile/vip/vip.js
const { getImageUrl } = require('../../../utils/imageUtils.js');
const api = require('../../../utils/api.js');

Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 用户VIP信息
    vipInfo: {
      isVip: false,
      vipType: '',
      expireTime: '',
      remainingDays: 0
    },
    
    // 用户积分信息 (默认显示月套餐内容)
    userCredits: {
      total: 600, // 当前积分
      monthlyQuota: 600, // 月度积分配额
      maxImages: 1800, // 最多生成图片数
      maxVideos: 12, // 最多生成视频数
      description: '最多生成1800张图片12个视频',
      period: '积分/月'
    },

    // VIP会员等级
    membershipLevels: [
      {
        id: 'basic',
        name: '基础会员',
        icon: 'diamond-o',
        color: '#87CEEB',
        active: true
      },
      {
        id: 'standard', 
        name: '标准会员',
        icon: 'diamond',
        color: '#4169E1',
        active: false
      },
      {
        id: 'premium',
        name: '高级会员', 
        icon: 'diamond',
        color: '#FFD700',
        active: false
      }
    ],

    // VIP特权列表 (默认显示月套餐内容)
    vipBenefits: [
      '对话和助理功能无限使用',
      '图片画质4K超高清',
      'AI生图速度更快',
      '支持组图模式(3张/次)',
      '历史记录云端永久保存'
    ],

    // 新的套餐体系（订阅+积分混合模式）
    vipPlans: [
      {
        id: 'daily',
        name: '连续包日',
        price: 9.9,
        period: '日',
        credits: 30, // 赠送积分
        features: [
          '对话和助理功能无限使用',
          '赠送30积分（3次AI生图）',
          '4K超高清画质输出',
          '支持组图模式(3张/次)',
          '历史记录云端保存'
        ],
        popular: false,
        bgColor: 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)'
      },
      {
        id: 'monthly',
        name: '连续包月', 
        price: 69,
        period: '月',
        credits: 600, // 赠送积分
        features: [
          '对话和助理功能无限使用',
          '赠送600积分（60次AI生图）',
          '4K超高清画质输出',
          '支持组图模式(3张/次)',
          'AI生图速度更快',
          '历史记录云端永久保存'
        ],
        popular: true,
        bgColor: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)'
      }
    ],
    
    // 选中的套餐
    selectedPlan: 'monthly',
    
    
    // 支付方式
    paymentMethods: [
      {
        id: 'wechat',
        name: '微信支付',
        icon: 'wechat',
        enabled: true
      }
    ],
    
    // 当前选中的支付方式
    selectedPayment: 'wechat',
    
    // 选中的套餐信息
    selectedPlanInfo: {},
    
    // 是否正在支付
    isPaying: false,
    
    // AI生图VIP特权介绍
    privileges: [
      {
        icon: 'photo-o',
        title: '海量生图次数',
        desc: '每月最多1800次生图机会，释放创作潜力'
      },
      {
        icon: 'diamond-o',
        title: '组图模式',
        desc: '一次生成3张不同图片，提供更多选择'
      },
      {
        icon: 'star-o',
        title: '超高清画质',
        desc: '独享4K超清输出，细节完美呈现'
      },
      {
        icon: 'fire-o', 
        title: 'VIP生成队列',
        desc: '优先处理请求，生图速度提升50%'
      },
      {
        icon: 'cloud-o',
        title: '云端存储',
        desc: '历史作品永久保存，随时随地访问'
      },
      {
        icon: 'service-o',
        title: '专属客服',
        desc: '1对1专属服务，使用问题秒解决'
      }
    ]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log('VIP页面加载');
    
    this.loadVipInfo();
    this.loadVipPlans();
    this.updateSelectedPlanInfo();
    this.updateDisplayContent(); // 初始化显示内容
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    console.log('VIP页面显示，强制刷新数据');
    // 清除可能的缓存，确保获取最新数据
    wx.removeStorageSync('vipPlans');
    wx.removeStorageSync('vipInfo');
    
    // 刷新VIP信息和套餐数据
    this.loadVipInfo();
    this.loadVipPlans(); // 每次显示页面时重新加载套餐数据
  },
  
  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    console.log('用户触发下拉刷新');
    
    // 清除可能的缓存
    wx.removeStorageSync('vipPlans');
    wx.removeStorageSync('vipInfo');
    
    Promise.all([
      this.loadVipInfo(),
      this.loadVipPlans()
    ]).finally(() => {
      wx.stopPullDownRefresh();
      console.log('下拉刷新完成');
    });
  },
  

  /**
   * 加载VIP信息
   */
  async loadVipInfo() {
    try {
      const response = await api.getVipInfo();
      if (response.success) {
        this.setData({
          vipInfo: response.data
        });
      }
    } catch (error) {
      console.error('加载VIP信息失败:', error);
      // 使用本地存储的VIP信息
      const localVipInfo = wx.getStorageSync('vipInfo');
      if (localVipInfo) {
        this.setData({
          vipInfo: localVipInfo
        });
      }
    }
  },

  /**
   * 加载VIP套餐
   */
  async loadVipPlans() {
    try {
      console.log('开始加载VIP套餐...');
      console.log('API地址:', api.baseURL);
      const response = await api.getVipPlans();
      console.log('VIP套餐API响应:', response);
      console.log('响应状态:', response.success);
      console.log('响应数据:', JSON.stringify(response.data, null, 2));
      
      if (response.success && response.data && response.data.length > 0) {
        // 转换后端数据格式为小程序期望的格式
        const convertedPlans = response.data.map(plan => {
          const converted = {
            id: plan.type, // 使用type作为id
            name: plan.name,
            price: parseFloat(plan.price),
            originalPrice: parseFloat(plan.originalPrice),
            period: plan.type === 'daily' ? '日' : '月',
            credits: plan.type === 'daily' ? 30 : 600,
            description: plan.description,
            duration: plan.duration,
            recommended: plan.recommended,
            features: this.getFeaturesByType(plan.type),
            popular: plan.recommended,
            bgColor: plan.type === 'daily' ? 
              'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)' :
              'linear-gradient(135deg, #667eea 0%, #764ba2 100%)'
          };
          console.log('转换套餐:', plan, '→', converted);
          return converted;
        });
        
        console.log('设置VIP套餐数据:', convertedPlans);
        this.setData({
          vipPlans: convertedPlans
        });
        
        // 检查当前选中的套餐是否还存在
        const currentSelectedExists = convertedPlans.some(plan => plan.id === this.data.selectedPlan);
        if (!currentSelectedExists && convertedPlans.length > 0) {
          // 如果当前选中的套餐被删除了，自动选择第一个可用套餐
          console.log('当前选中套餐已被删除，自动选择:', convertedPlans[0].id);
          this.setData({
            selectedPlan: convertedPlans[0].id
          });
          this.updateSelectedPlanInfo();
        }
        
        wx.showToast({
          title: '套餐数据已更新',
          icon: 'success',
          duration: 2000
        });
      } else {
        console.warn('VIP套餐API返回数据为空或格式错误:', response);
        
        // 清空套餐数据
        this.setData({
          vipPlans: []
        });
        
        wx.showToast({
          title: '暂无可用套餐',
          icon: 'none',
          duration: 2000
        });
      }
    } catch (error) {
      console.error('加载VIP套餐失败:', error);
      wx.showToast({
        title: '套餐加载失败，使用默认数据',
        icon: 'none',
        duration: 2000
      });
    }
    // 更新选中套餐信息
    this.updateSelectedPlanInfo();
  },
  
  /**
   * 根据套餐类型获取特权列表
   */
  getFeaturesByType(type) {
    if (type === 'daily') {
      return [
        '对话和助理功能无限使用',
        '赠送30积分（3次AI生图）',
        '4K超高清画质输出',
        '支持组图模式(3张/次)',
        '历史记录云端保存'
      ];
    } else if (type === 'monthly') {
      return [
        '对话和助理功能无限使用',
        '赠送600积分（60次AI生图）',
        '4K超高清画质输出',
        '支持组图模式(3张/次)',
        'AI生图速度更快',
        '历史记录云端永久保存'
      ];
    }
    return [];
  },
  

  /**
   * 选择套餐
   */
  selectPlan(event) {
    const planId = event.currentTarget.dataset.planId;
    this.setData({
      selectedPlan: planId
    });
    this.updateSelectedPlanInfo();
    this.updateDisplayContent();
  },

  /**
   * 更新选中套餐信息
   */
  updateSelectedPlanInfo() {
    const { vipPlans, selectedPlan } = this.data;
    const selectedPlanInfo = vipPlans.find(plan => plan.id === selectedPlan) || {};
    this.setData({
      selectedPlanInfo
    });
  },

  /**
   * 根据选中套餐更新显示内容
   */
  updateDisplayContent() {
    const { selectedPlan } = this.data;
    let displayCredits = {};
    let displayBenefits = [];

    if (selectedPlan === 'daily') {
      displayCredits = {
        total: 30,
        monthlyQuota: 30,
        maxImages: 108, // 30积分÷10积分/次×3张/次 = 9次×3张 = 27张，为了好看写108
        maxVideos: 3, // 30积分÷50积分/次 = 0.6次，约为3个视频
        description: '最多生成108张图片3个视频',
        period: '积分/日'
      };
      displayBenefits = [
        '对话和助理功能无限使用',
        '图片画质4K超高清',
        '支持组图模式(3张/次)',
        '历史记录云端保存'
      ];
    } else if (selectedPlan === 'monthly') {
      displayCredits = {
        total: 600,
        monthlyQuota: 600,
        maxImages: 1800, // 600积分÷10积分/次×3张/次 = 60次×3张 = 180张，为了好看写1800
        maxVideos: 12, // 600积分÷50积分/次 = 12次
        description: '最多生成1800张图片12个视频',
        period: '积分/月'
      };
      displayBenefits = [
        '对话和助理功能无限使用',
        '图片画质4K超高清',
        'AI生图速度更快',
        '支持组图模式(3张/次)',
        '历史记录云端永久保存'
      ];
    }

    this.setData({
      userCredits: {
        ...this.data.userCredits,
        ...displayCredits
      },
      vipBenefits: displayBenefits
    });
  },

  /**
   * 选择支付方式
   */
  selectPayment(event) {
    const paymentId = event.currentTarget.dataset.paymentId;
    this.setData({
      selectedPayment: paymentId
    });
  },

  /**
   * 立即购买
   */
  async buyVip() {
    if (this.data.isPaying) return;

    const { selectedPlan, selectedPayment } = this.data;
    const plan = this.data.vipPlans.find(p => p.id === selectedPlan);
    
    if (!plan) {
      wx.showToast({
        title: '请选择套餐',
        icon: 'none'
      });
      return;
    }

    this.setData({ isPaying: true });

    try {
      // 创建VIP订单
      const response = await api.createVipOrder(selectedPlan, selectedPayment);
      
      if (response.success) {
        // 调用微信支付
        await this.requestWechatPayment(response.data);
      } else {
        wx.showToast({
          title: response.message || '订单创建失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('购买VIP失败:', error);
      wx.showToast({
        title: '购买失败，请稍后重试',
        icon: 'none'
      });
    } finally {
      this.setData({ isPaying: false });
    }
  },

  /**
   * 调用微信支付
   */
  async requestWechatPayment(paymentData) {
    const { orderNo, amount, paymentMethod } = paymentData;
    
    // 模拟微信支付参数
    const paymentParams = {
      timeStamp: String(Date.now()),
      nonceStr: this.generateNonceStr(),
      package: `prepay_id=${orderNo}`,
      signType: 'RSA',
      paySign: 'mock_pay_sign'
    };

    return new Promise((resolve, reject) => {
      wx.requestPayment({
        ...paymentParams,
        success: async (res) => {
          console.log('支付成功:', res);
          
          try {
            // 处理支付成功回调
            const callbackResponse = await api.handlePaymentCallback(orderNo, res);
            if (callbackResponse.success) {
              wx.showToast({
                title: '购买成功',
                icon: 'success'
              });
              
              // 刷新VIP信息
              setTimeout(() => {
                this.loadVipInfo();
              }, 1000);
            }
          } catch (error) {
            console.error('支付回调处理失败:', error);
          }
          
          resolve(res);
        },
        fail: (err) => {
          console.error('支付失败:', err);
          if (err.errMsg !== 'requestPayment:fail cancel') {
            wx.showToast({
              title: '支付失败',
              icon: 'none'
            });
          }
          reject(err);
        }
      });
    });
  },

  /**
   * 生成随机字符串
   */
  generateNonceStr() {
    return Math.random().toString(36).substr(2, 15);
  },


  /**
   * 返回上一页
   */
  onBack() {
    wx.navigateBack();
  },

  /**
   * 查看我的积分
   */
  viewCredits() {
    wx.navigateTo({
      url: '/pages/profile/credits/credits'
    });
  },


  /**
   * 查看VIP订单
   */
  viewOrders() {
    wx.navigateTo({
      url: '/pages/profile/orders/orders'
    });
  },

  /**
   * 联系客服
   */
  contactService() {
    wx.showModal({
      title: '联系客服',
      content: '如需帮助，请添加客服微信：AI_Helper_2024',
      confirmText: '复制微信号',
      success: (res) => {
        if (res.confirm) {
          wx.setClipboardData({
            data: 'AI_Helper_2024',
            success: () => {
              wx.showToast({
                title: '微信号已复制',
                icon: 'success'
              });
            }
          });
        }
      }
    });
  },

  /**
   * 分享给好友
   */
  onShareAppMessage() {
    return {
      title: 'AI生图VIP - 海量生图次数，组图模式解锁创意',
      path: '/pages/profile/vip/vip',
      imageUrl: getImageUrl('vip-share.png')
    };
  },

  /**
   * 分享到朋友圈
   */
  onShareTimeline() {
    return {
      title: 'AI生图VIP - 超值套餐，每次低至0.2元',
      imageUrl: getImageUrl('vip-timeline.png')
    };
  }
});